﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpArch.Core.PersistenceSupport;
using SharpArch.Core.DomainModel;

namespace zeus.Core.RepositoryInterfaces
{
    public interface IUbicacionRepository : IRepository<Ubicacion>
    {
        Ubicacion GetPosicionPorId(String id);
        IList<Ubicacion> GetUltimaPosicion(int id);
        //Ubicacion GetUltimaPosicion(int id);
        IList<Ubicacion> GetReportesAvanzada(int id, string fecha_desde, string fecha_hasta);
        IList<Ubicacion> GetUbicaciones(int codigoUnidad);
        IList<Ubicacion> GetUbicacionesPorGrupo(int codigoGrupo);
        IList<Ubicacion> GetUbicacionesPorCliente(int codigoCliente);
        IList<Ubicacion> GetUbicacionesPorUsuario(int codigoUsuario);
        IList<Ubicacion> GetUbicacionesPorGrupoCliente(int codigoCliente);
        IList<Ubicacion> GetUbicacionesPorGrupoUsuario(int codigoUsuario);
        IList<Ubicacion> GetUbicacionesPorEvento(int codigoEvento);
        IList<Ubicacion> GetUbicacionesPorEventoPorUnidad(int codigoEvento, int codigoUnidad);
        IList<Ubicacion> GetUbicacionesPorEventoPorGrupo(int codigoEvento, int codigoGrupo);
        IList<Ubicacion> GetUbicacionesPorEventoPorCliente(int codigoEvento, int codigoCliente);
        IList<Ubicacion> GetUbicacionesPorGrupoClienteEvento(int codigoCliente, int codigoEvento);
        IList<Ubicacion> GetUbicacionesPorUsuarioEvento(int codigoUsuario, int codigoEvento);
        IList<Ubicacion> GetUbicacionesPorGrupoUsuarioEvento(int codigoUsuario, int codigoEvento);
        IList<Ubicacion> GetUbicacionesPorUnidadGpsValid(int codigoUnidad, int codigoGps);
        IList<Ubicacion> GetUbicacionesPorUnidadBateriaPrinciapl(int codigoUnidad, int codigobatPri);
        IList<Ubicacion> GetUbicacionesPorUnidadBateriaAlterna(int codigoUnidad, int codigobatAlt);
        IList<Ubicacion> GetUbicacionesPorUnidadEstadoLogico(int codigoUnidad, int codigoEstadoLogico);
        IList<Ubicacion> GetUbicacionesPorGrupoGpsValid(int codigoGrupo, int codigoGps);
        IList<Ubicacion> GetUbicacionesPorGrupoBateriaPrinciapl(int codigoGrupo, int codigobatPri);
        IList<Ubicacion> GetUbicacionesPorGrupoBateriaAlterna(int codigoGrupo, int codigobatAlt);
        IList<Ubicacion> GetUbicacionesPorGrupoEstadoLogico(int codigoGrupo, int codigoEstadoLogico);
        IList<Ubicacion> GetUbicacionesPorGpsPorCliente(int codigoGps, int codigoCliente);
        IList<Ubicacion> GetUbicacionesPorUsuarioGps(int codigoUsuario, int codigoGps);
        IList<Ubicacion> GetUbicacionesPorClienteBateriaPrinciapl(int codigoCliente, int codigobatPri);
        IList<Ubicacion> GetUbicacionesPorUsuarioBateriaPrinciapl(int codigoUsuario, int codigobatPri);
        IList<Ubicacion> GetUbicacionesPorClienteBateriaAlterna(int codigoCliente, int codigobatAlt);
        IList<Ubicacion> GetUbicacionesPorUsuarioBateriaAlterna(int codigoUsuario, int codigobatAlt);
        IList<Ubicacion> GetUbicacionesPorClienteEstadoLogico(int codigoCliente, int codigoEstadoLogico);
        IList<Ubicacion> GetUbicacionesPorUsuarioEstadoLogico(int codigoUsuario, int codigoEstadoLogico);
        IList<Ubicacion> GetUbicacionesPorGrupoClienteGps(int codigoCliente, int codigoGps);
        IList<Ubicacion> GetUbicacionesPorGrupoUsuarioGps(int codigoUsuario, int codigoGps);
        IList<Ubicacion> GetUbicacionesPorGrupoClienteBateriaPrinciapl(int codigoCliente, int codigobatPri);
        IList<Ubicacion> GetUbicacionesPorGrupoUsuarioBateriaPrinciapl(int codigoUsuario, int codigobatPri);
        IList<Ubicacion> GetUbicacionesPorGrupoClienteBateriaAlterna(int codigoCliente, int codigobatAlt);
        IList<Ubicacion> GetUbicacionesPorGrupoUsuarioBateriaAlterna(int codigoUsuario, int codigobatAlt);
        IList<Ubicacion> GetUbicacionesPorGruporClienteEstadoLogico(int codigoCliente, int codigoEstadoLogico);
        IList<Ubicacion> GetUbicacionesPorGruporUsuarioEstadoLogico(int codigoUsuario, int codigoEstadoLogico);

        IList<Ubicacion> GetUbicacionesPorGrupoUsuarioAccionesEjecutada(int codigoUsuario, int codigoAccion);
        IList<Ubicacion> GetUbicacionesPorGrupoClienteStatusEvento(int codigoCliente, int codigoStatus);
        IList<Ubicacion> GetUbicacionesPorVelocidades(int codigoUnidad, int codigoVelocidad);
        IList<Ubicacion> GetUbicacionesPorGrupoVelocidades(int codigoGrupo, int codigoVelocidad);
        IList<Ubicacion> GetUbicacionesPorGrupoMapa(int codigoGrupo);
        IList<Ubicacion> getUbicacionesPorUsuarioId(int codigoUsuario);
        IList<Ubicacion> getUbicacionesPorGrupoClienteUsuario(int codigoUsuario);

    }
}
